HJS

리버스 프록시

1️⃣ 리버스 프록시란?

리서프 프록시는 클라이언트의 요청을 대신 받아서 백엔드 서버로 전달하고, 응답을 다시 클라이언트에게 반환하는 역할을 하는 서버입니다.

🔹 리버스 프록시의 장점



2️⃣ proxy_pass를 활용한 리버스 프록시 설정

proxy_pass 지시어를 사용하면 NGINX가 클라이언트 요청을 백엔드 서버로 전달할 수 있습니다.

🔹 기본 설정 예제

아래 설정은 http://localhost:3000에서 실행 중인 Node.js 백엔드 서버로 요청을 전달하는 예제입니다.

server {
  listen: 80;
  server_name example.com;

  location /api/ {
    proxy_pass http://localhost:3000/;
  }
}

✔️ /api/로 시작하는 요청이 들어오면 http://localhost:3000/으로 전달


3️⃣ proxy_set_header, X-Forwarded-For 개념 이해

🔹 proxy_set_header

NGINX가 백엔드 서버로 요청을 전달할 때, 특정 HTTP 헤더 값을 추가하거나 변경할 수 있습니다.

location /api/ {
  proxy_pass http://localhost:3000/;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

🔹 X-Forwarded-For 헤더

🧐 예제: 백엔드에서 클라이언트 IP 확인하기

app.get('/', (req, res) => {
    const clientIp = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
    res.send(`Client IP: ${clientIp}`);
});